# ************************************************************* -*- Makefile -*-
#
# Copyright (C) 2004-2015 Andreas Huggel <ahuggel@gmx.net>
#
# This Makefile is part of the Exiv2 distribution.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
#    1. Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#    2. Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#    3. The name of the author may not be used to endorse or promote
#       products derived from this software without specific prior
#       written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# File:      Makefile
# Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
# History:   26-Dec-04, ahu: created
#
# Description:
#  Simple makefile to run the Exiv2 unit tests
#
# Restrictions:
#  Only tested with GNU make.
#

# Default make target
all: test

top_srcdir = ..

# Initialisations
SHELL = /bin/sh

.SUFFIXES:

# ******************************************************************************
# Targets
.PHONY: all test testv teste mostlyclean clean distclean maintainer-clean

##
# to save download time for simple build/test, we download video and eps data on demand
SVN    = svn://dev.exiv2.org/svn/testdata/trunk

##
# Add test drivers to this list
TESTS  = addmoddel.sh         \
         conversions.sh       \
         exifdata-test.sh     \
         exiv2-test.sh        \
         geotag-test.sh       \
         imagetest.sh         \
         icc-test.sh          \
         iotest.sh            \
         iptctest.sh          \
         iso65k-test.sh       \
         modify-test.sh       \
         path-test.sh         \
         preview-test.sh      \
         stringto-test.sh     \
         tiff-test.sh         \
         webp-test.sh         \
         write-test.sh        \
         write2-test.sh       \
         xmpparser-test.sh    \
         version-test.sh

# video tests
TESTV  = video-test.sh
TESTVW = write-video-test.sh

# EPS tests
TESTE  = eps-test.sh          \
         eps-preview-test.sh

# webready tests
TESTX  = httpiotest.sh        \
         curliotest.sh        \
         sshiotest.sh

tests:
	cd .. ; make tests

test:
	mkdir -p tmp
	rm -rf tmp/test-failed
	@list='$(TESTS)'; for p in $$list; do \
	    echo Running $$p ...; \
	    ./$$p;  \
	    rc=$$?; \
	    if [ $$rc -ne 0 ]; then echo '***' ; echo '***' $$p result = $$rc ; echo '***'       ; fi ; \
	    if [ $$rc -ne 0 ]; then              echo '***' $$p result = $$rc >> tmp/test-failed ; fi ; \
	done
	make newtests
	@if [ -e tmp/test-failed ]; then echo '***' FAILED ; cat tmp/test-failed ; echo '***' ; exit 255; fi

newtests:
	( cd ../tests ; python3 runner.py --verbose )

testv:
	@for t in /video ; do \
		if [ ! -e data/$$t ]; then \
	echo svn export '$(SVN)'$$t data$$t -r 3100 ; \
	     svn export '$(SVN)'$$t data$$t -r 3100 ; \
	fi ; done
	@list='$(TESTV)'; for p in $$list; do \
	    echo Running $$p ...; \
	    ./$$p; \
	done

testvw:
	@for t in /video ; do \
		if [ ! -e data/$$t ]; then \
	echo svn export '$(SVN)'$$t data$$t ; \
	     svn export '$(SVN)'$$t data$$t ; \
	fi ; done
	@list='$(TESTVW)'; for p in $$list; do \
	    echo Running $$p ...; \
	    ./$$p; \
	done

teste:
	@for t in /eps ; do \
		if [ ! -e data/$$t ]; then \
	echo svn export '$(SVN)'$$t data$$t ; \
	     svn export '$(SVN)'$$t data$$t ; \
	fi ; done
	@list='$(TESTE)'; for p in $$list; do \
	    echo Running $$p ...; \
	    ./$$p; \
	    rc=$$?; \
	    if [ $$rc -ne 0 ]; then \
		echo result = $$rc ; \
		exit $$rc ; \
		fi ; \
	done

testx:
	@list='$(TESTX)'; for p in $$list; do \
	    echo Running $$p ...; \
	    ./$$p; \
	done

mostlyclean clean:
	rm -rf $(top_srcdir)/test/tmp/*

distclean: clean
	$(RM) *~ *.bak *#

# This command is intended for maintainers to use; it deletes files
# that may need special tools to rebuild.
maintainer-clean: distclean
	rm -rf $(top_srcdir)/data/video $(top_srcdir)/test/data/eps

# That's all Folks!
##
